//#include<bits/stdc++.h>
//using namespace std;
//const int N = 1e5 + 10;
//int a[N];
//int main()
//{
//	int n, m;
//	cin >> n >> m;
//	for (int i = 0; i < n; i++)
//	{
//		int x;
//		cin >> x;
//		if (x == m)
//		{		cout << "YES";
//		return 0;
//	}
//	}
//	cout << "NO";
//	return 0;
//}
//#include<bits/stdc++.h>
//using namespace std;
//const int N = 1e5 + 10;
//int a[N];
//int main()
//{
//	int n;
//	cin >> n;
//	int j = 0, o = 0;
//	if (n == 1)
//	{
//		cout << 1;
//		return 0;
//	}
//	for (int i = 0; i < n; i++)
//	{
//		cin >> a[i];
//		if (a[i] % 2)
//			j++;
//		else
//			o++;
//	}
//	if (j == o)
//		cout << 0;
//	else if (j > o)
//		cout << (j - o) % 2;
//	else
//		cout << o - j;
//	return 0;
//}
//#include<bits/stdc++.h>
//using namespace std;
//const int N = 998244353;
//int main()
//{
//	int n;
//	cin >> n;
//	while (n--)
//	{
//		long long ans = 0;
//		long long a, x;
//		cin >> a >> x;
//		ans = a * x;
//		if (x == 1)
//			cout << ans % N << endl;
//		else
//		{
//			for (int i = 1; i < x; i++)
//			{
//				ans = (ans % N) * (a % N);
//			}
//			cout << ans % N << endl;
//		}
//	}
//	return 0;
//}
//#include<bits/stdc++.h>
//using namespace std;
//long long a;
//const int N = 998244353;
//long long func(int i)
//{
//	if (i == 1)
//		return a * i;
//	else
//	{
//		long long sum = 0;
//		for (int x = 1; x < i; x++)
//		{
//			sum +=a*a*x%N;
//		}
//			return sum;
//	}
//}
//int main()
//{
//	int n;
//	cin >> n;
//	while (n--)
//	{
//		int  x;
//		cin >> a >> x;
//		
//			cout << func(x) % N << endl;
//	}return 0;
//}
//#include<bits/stdc++.h>
//using namespace std;
//long long arr[100010];
//int main()
//{
//    int T;
//    cin >> T;
//    while (T--)
//    {
//        int n, m;
//        cin >> n >> m;
//        for (int i = 0; i < n; i++)
//            cin >> arr[i];
//        sort(arr, arr + n);
//        reverse(arr, arr + n);
//        int i;
//        for (i = 0; i < n; i++)
//        {
//            if (arr[i] <= 0)
//                break;
//        }
//        if (i == 0)
//            cout << -1 << endl;
//        else if (i > m)
//            cout << -1 << endl;
//        else
//        {
//            int k = 0;
//            m -= i;
//            while (m--)
//            {
//                while (arr[i] <= 0)
//                {
//                    arr[i] += arr[0];
//                    k++;
//                }
//                cout << k << endl;
//            }
//        }
//    }
//}
//#include<bits/stdc++.h>
//using namespace std;
//long long arr[100010];
//int main()
//{
//    int T;
//    cin >> T;
//    while (T--)
//    {
//        int n, m;
//        cin >> n >> m;
//        for (int i = 0; i < n; i++)
//            cin >> arr[i];
//        sort(arr, arr + n);
//        reverse(arr, arr + n);
//        int i;
//        for (i = 0; i < n; i++)
//        {
//            if (arr[i] < 0)
//                break;
//        }
//        int j;
//        for (j = n - 1; j >= 0; j--)
//        {
//            if (arr[j] > 0)
//                break;
//        }
//        int k = 0;
//        for ( k = 0; k < n; k++)
//        {
//            if (arr[k] <= 0)
//                break;
//        }
//        if (i == n)
//            cout << -1 << endl;
//        else if (j == -1)
//            cout << -1 << endl;
//        else
//        {
//            if (k == m)
//                cout << 0 << endl;
//            else if (k < m)
//            {
//                int kk = 0;
//                m -= k;
//                while (m--)
//                {
//                    while (arr[k] <= 0)
//                    {
//                        arr[k] += arr[0];
//                        kk++;
//                    }
//                    k++;
//                }
//                cout << kk << endl;
//            }
//            else if (k > m)
//            {
//                int kk = 0;
//                m = k - m;
//                while (m--)
//                {
//                    while (arr[k - 1] >= 0)
//                    {
//                        arr[k - 1] += arr[n - 1];
//                        kk++;
//                    }
//                    k++;
//                }
//                cout << kk << endl;
//            }
//        }
//    }
//    return 0;
//}
//#include<bits/stdc++.h>
//using namespace std;
//unsigned long long a;
//const int N = 998244353;
//unsigned long long func(int i)
//{
//	if (i == 1)
//		return a * i;
//	else
//	{
//		unsigned long long sum = 0;
//		sum = (a % N) * (a % N) % N * ((i * i - i) / 2 % N) % N;
//		return sum;
//	}
//}
//int main()
//{
//	int n;
//	cin >> n;
//	while (n--)
//	{
//		int  x;
//		cin >> a >> x;
//		cout << func(x) % N << endl;
//	}return 0;
//}
//#include<bits/stdc++.h>
//using namespace std;
//int zero[510];
//int one[510];
//int L, R;
//int point[510][510];
//int dfs(int l, int r)
//{
//    if (point[l][r])
//        return point[l][r];
//    int Max = 0;
//    for (int i = l; i < r; i++)
//    {
//        if (abs((one[r+1] - one[i+2]) - (zero[i+1] - zero[l])) >= L && abs((one[r+1] - one[i+2]) - (zero[i+1] - zero[l])) <= R)
//            Max = max(Max, dfs(l, i) + dfs(i + 1, r) + 1);
//    }
//    point[l][r] = Max;
//    return Max;
//}
//int main()
//{
//    int n;
//    cin >> n >> L >> R;
//    string s;
//    cin >> s;
//    s.insert(s.begin(), '0');
//    for (int i = 1; i <= n; i++)
//    {
//        zero[i] = zero[i - 1] + (s[i] == '0');
//        one[i] = one[i - 1] + (s[i] == '1');
//    }
//    cout << dfs(0, n - 1);
//    return 0;
//}
//#include<bits/stdc++.h>
//typedef long long ll;
//using namespace std;
//const ll mod = 998244353;
//ll n, L, R, l, r;
//string s;
//ll q1[550][550] = { 0 };
//ll qiege(ll l, ll r, ll L, ll R) {
//    if (l == r) return 0;
//    ll l1 = 0, l0 = 0, maxn = 0;
//    for (int i = l; i <= r; i++) {
//        if (s[i - 1] == '1') l1++;
//    }
//    for (int i = l; i <= r - 1; i++) {
//        if (s[i - 1] == '0') l0++;
//        else l1--;
//        if (abs(l1 - l0) >= L && abs(l1 - l0) <= R) {
//            maxn = max(1 + qiege(l, i, L, R) + qiege(i + 1, r, L, R), maxn);
//        }
//    }
//    q1[l][r] = maxn;
//    return maxn;
//}
//int main() {
//    cin >> n >> L >> R;
//    cin >> s;
//    cout << qiege(1, n, L, R);
//    return 0;
//}
#include<bits/stdc++.h>
using namespace std;
long long arr[100010];
int main()
{
    int T;
    cin >> T;
    while (T--)
    {
        int n, m;
        cin >> n >> m;
        for (int i = 0; i < n; i++)
            cin >> arr[i];
        sort(arr, arr + n);
        reverse(arr, arr + n);
        int i;
        for (i = 0; i < n; i++)
        {
            if (arr[i] < 0)
                break;
        }
        int j;
        for (j = n - 1; j >= 0; j--)
        {
            if (arr[j] > 0)
                break;
        }
        int k = 0;
        for (k = 0; k < n; k++)
        {
            if (arr[k] <= 0)
                break;
        }

        if (k == m)
            cout << 0 << endl;
        else if (i == n)
            cout << -1 << endl;
        else if (j == -1)
            cout << -1 << endl;
        else if (k < m)
        {
            int kk = 0;
            m -= k;
            int flag = 0;
            while (m--)
            {
                if (k == n)
                {
                    flag = 1;
                    break;
                }
                while (arr[k] <= 0)
                {
                    arr[k] += arr[0];
                    kk++;
                }
                k++;
            }
            if (flag)
                cout << kk << endl;
            else
                cout << -1 << endl;
        }
        else if (k > m)
        {
            int flag = 0;
            int kk = 0;
            m = k - m;
            while (m--)
            {
                if (k == 0)
                {
                    flag = 1;
                    break;
                };
                while (arr[k - 1] >= 0)
                {
                    arr[k - 1] += arr[n - 1];
                    kk++;
                }
                k++;
            }
            if (flag)
                cout << kk << endl;
            else
                cout << -1 << endl;
        }
    }
    return 0;
}